package cn.kgc.tafang.dao.impl;

import cn.kgc.tafang.dao.GameDao;
import cn.kgc.tafang.dao.Init;
import cn.kgc.tafang.entity.Hero;
import cn.kgc.tafang.entity.User;
import cn.kgc.tafang.service.*;

import java.io.File;
import java.util.Collection;
import java.util.Map;

public class GameDaoImpl implements GameDao {
    public static Map<String,Hero> heroMap= Init.heroMap;
    public static Collection<Hero> heros=heroMap.values();
    File file=new File("aaa.txt");
    /**
     * 开始游戏
     */
    @Override
    public void playGame(User user) {
        PlayGameOpera playGameOpera=new PlayGameOpera();
        playGameOpera.a(user);
        //序列化
        Init.users.put(user.getName(),user);
        UserOpera.Seria(Init.users,file);

    }

    /**
     * 买装备 	买技能	卖装备	卖技能
     */
    @Override
    public void Shangcheng(int choice,User user) {
        UserOpera.unSeria(file);
        switch (choice){
            case 1:
                ShangChengOpera.buyZhuangBei(user);
                break;
            case 2:
                ShangChengOpera.buySkill(user);
                break;
            case 3:
                ShangChengOpera.SellZhuangbei(user);
                break;
            case 4:
                ShangChengOpera.SellSkill(user);
                break;
        }
        //序列化
        Init.users.put(user.getName(),user);
        UserOpera.Seria(Init.users,file);

    }

    /**
     * 打印输出英雄信息
     */
    @Override
    public void showHero(User user) {
        System.out.println("昵称\t等级\t武器\t攻击力\t积分\t攻击距离\t金币\t点卷\t攻击范围\t\t技能1 技能2 技能3");
        System.out.println(user.getHero().getName() + "\t\t" + user.getHero().getGrade() + "\t\t" + user.getHero().getArms()+"\t"+user.getHero().getPowed()
                + "\t\t" + user.getHero().getFens() + "\t\t" + user.getHero().getDistance() + "\t\t\t" + user.getHero().getMongey()
                + "\t\t" + user.getHero().getDianJuan() + "\t\t" + user.getHero().getJuLi() + "\t\t\t\t" + user.getHero().getSkill1() + " " + user.getHero().getSkill2() + " " + user.getHero().getSkill3());
        Init.users.put(user.getName(),user);
        UserOpera.Seria(Init.users,file);
}

    /**
     * 更换装备，更换技能
     * @param choice
     */
    @Override
    public void choiceZhuangB(int choice,User user) {
        UserOpera.unSeria(file);
        switch (choice){
            case 1:
                ZhuangbeiOpera.Zhuangbei(user);
                break;
            case 2:
                ZhuangbeiOpera.HuanSkill(user);
                break;
        }
        Init.users.put(user.getName(),user);
        UserOpera.Seria(Init.users,file);
    }

    /**
     * 看广告赚金币
     */
    @Override
    public void getMoney(User user) {
        GetMoneyOpera.GetMoneyMain(user);
        //序列化
        Init.users.put(user.getName(),user);
        UserOpera.Seria(Init.users,file);
    }

    /**
     * 点卷充值 冲60点卷送200金币
     * @param money
     */
    @Override
    public void getDianJuan(int money,User user) {
        if (money < 60) {
            System.out.println("充值失败，点卷最低存60");
        } else if (money<=100){
            System.out.println("充值成功!");
            System.out.println("另外送您200金币!");
            user.getHero().setDianJuan(user.getHero().getDianJuan() + money);
            user.getHero().setMongey(user.getHero().getMongey() + 200);
        }else if (money<=300){
            System.out.println("充值成功!");
            System.out.println("另外送您300金币!");
            user.getHero().setDianJuan(user.getHero().getDianJuan() + money);
            user.getHero().setMongey(user.getHero().getMongey() + 300);
        }else {
            System.out.println("充值成功!");
            System.out.println("另外送您300金币!");
            user.getHero().setDianJuan(user.getHero().getDianJuan() + money);
            user.getHero().setMongey(user.getHero().getMongey() + 500);
        }
        //序列化
        Init.users.put(user.getName(),user);
        UserOpera.Seria(Init.users,file);
    }
}
